Solidity ব্যবহার করে একটি Basic Smart Contract তৈরি করা

Latest Technologies - ইথেরিয়াম (Ethereum) - প্র্যাকটিস প্রোজেক্টস | NCTB BOOK

Solidity ব্যবহার করে একটি Basic Smart Contract তৈরি করা অনেক সহজ এবং Ethereum ব্লকচেইনের জন্য এটি আদর্শ প্রোগ্রামিং ভাষা। Solidity দিয়ে আপনি স্মার্ট কন্ট্রাক্ট তৈরি করতে পারবেন, যা Ethereum ব্লকচেইনে ডেপ্লয় করা যাবে। নিচে একটি Basic Smart Contract এর উদাহরণ দেয়া হলো, যা একটি সাধারণ স্টোরেজ কন্ট্রাক্ট হিসেবে কাজ করবে। এই কন্ট্রাক্টের মাধ্যমে আপনি একটি ভ্যালু স্টোর করতে এবং রিট্রিভ করতে পারবেন।

Solidity দিয়ে Basic Smart Contract: SimpleStorage

// Solidity ভার্সন নির্ধারণ করা
pragma solidity ^0.8.0;

// কন্ট্রাক্টের নাম SimpleStorage
contract SimpleStorage {
    // একটি private state variable সংরক্ষণ করা, যা শুধুমাত্র কন্ট্রাক্টের মাধ্যমে অ্যাক্সেস করা যাবে
    uint private storedData;

    // একটি function যা ভ্যালু স্টোর করবে
    function set(uint x) public {
        storedData = x;
    }

    // একটি function যা স্টোর করা ভ্যালু রিটার্ন করবে
    function get() public view returns (uint) {
        return storedData;
    }
}

কন্ট্রাক্টের বিস্তারিত ব্যাখ্যা

Solidity ভার্সন নির্ধারণ:

pragma solidity ^0.8.0;

এই লাইনটি Solidity কম্পাইলারকে বলে যে, এই কন্ট্রাক্টটি Solidity-এর 0.8.0 বা তার পরবর্তী ভার্সনে কম্পাইল করতে হবে। এটি একটি ভালো প্র্যাকটিস যাতে সুনির্দিষ্ট ভার্সনে কন্ট্রাক্টটি কাজ করতে পারে এবং ভার্সন-স্পেসিফিক বাগ এড়ানো যায়।

কন্ট্রাক্ট ডিক্লেয়ারেশন:

contract SimpleStorage {

এখানে, SimpleStorage নামে একটি স্মার্ট কন্ট্রাক্ট তৈরি করা হয়েছে। কন্ট্রাক্টের মধ্যে আমরা ভ্যারিয়েবল এবং ফাংশনগুলো সংজ্ঞায়িত করবো।

স্টেট ভ্যারিয়েবল:

storedData হলো একটি uint টাইপের প্রাইভেট স্টেট ভ্যারিয়েবল, যা কন্ট্রাক্টে একটি সংখ্যা সংরক্ষণ করবে। প্রাইভেট হওয়ার কারণে, এটি কেবলমাত্র এই কন্ট্রাক্টের মাধ্যমে অ্যাক্সেস করা যাবে এবং বাইরের কোনো অ্যাকাউন্ট বা কন্ট্রাক্ট এটি সরাসরি অ্যাক্সেস করতে পারবে না।

set ফাংশন:

function set(uint x) public {
   storedData = x;
}

set ফাংশনটি পাবলিক এবং এটি একটি uint মান ইনপুট হিসেবে নেয়। এই ফাংশনটি ব্যবহার করে storedData ভ্যারিয়েবলে একটি নতুন মান সেট করা যায়।

get ফাংশন:

function get() public view returns (uint) {
   return storedData;
}

get ফাংশনটি পাবলিক এবং এটি একটি view ফাংশন, যার মানে হলো এটি শুধুমাত্র ডেটা রিড করে, পরিবর্তন করে না। এটি storedData ভ্যারিয়েবলে সংরক্ষিত মান রিটার্ন করে।

কন্ট্রাক্ট কম্পাইল এবং ডেপ্লয় করা

এই কন্ট্রাক্টটি Solidity কম্পাইলার ব্যবহার করে কম্পাইল করা যায় এবং তারপর Ethereum Virtual Machine (EVM)-এ ডেপ্লয় করা যায়। নিচে কন্ট্রাক্ট ডেপ্লয় এবং ব্যবহার করার ধাপগুলো দেয়া হলো:

  1. Remix IDE ব্যবহার করে কম্পাইল করা:
    • Remix IDE একটি জনপ্রিয় Solidity IDE, যা সরাসরি ব্রাউজারে চালানো যায়।
    • Remix-এ কন্ট্রাক্টটি পেস্ট করে কম্পাইল বাটনে ক্লিক করুন।
  2. কন্ট্রাক্ট ডেপ্লয় করা:
    • Remix-এ Deploy বাটন ক্লিক করে কন্ট্রাক্টটি ডেপ্লয় করুন। আপনি Ethereum-এর টেস্টনেট (যেমন Ropsten, Kovan) বা স্থানীয় নেটওয়ার্ক ব্যবহার করতে পারেন।
  3. কন্ট্রাক্ট ইন্টারঅ্যাক্ট করা:
    • ডেপ্লয় হওয়ার পর, আপনি set এবং get ফাংশনগুলো ব্যবহার করে কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে পারেন।
    • set ফাংশনের মাধ্যমে একটি মান ইনপুট দিন এবং get ফাংশন ব্যবহার করে সেই মানটি রিড করুন।

Solidity Smart Contract-এর মূল পয়েন্টস

  • Solidity স্মার্ট কন্ট্রাক্টগুলো Ethereum ব্লকচেইনে স্বয়ংক্রিয়ভাবে এক্সিকিউট হয়, যা সুরক্ষিত এবং পরিবর্তনশীল নয়।
  • প্রতিটি স্মার্ট কন্ট্রাক্টের ফাংশন Ethereum নেটওয়ার্কে একটি ট্রানজেকশন হিসেবে রেকর্ড হয়।
  • view বা pure ফাংশনগুলো শুধুমাত্র ডেটা রিড বা ক্যালকুলেশন করে এবং গ্যাস খরচ হয় না। তবে set বা অন্যান্য স্টেট-মডিফাইং ফাংশনগুলোতে গ্যাস ফি প্রয়োজন হয়।

কন্ট্রাক্ট এক্সটেনশন

আপনি কন্ট্রাক্টটিতে আরও ফাংশন যুক্ত করতে পারেন, যেমন:

  • কন্ট্রাক্টে একটি মালিক (Owner) নির্ধারণ করা এবং শুধুমাত্র মালিকের অনুমোদনে ভ্যালু পরিবর্তনের সুযোগ দেওয়া।
  • event যোগ করা, যা কন্ট্রাক্টের পরিবর্তন সম্পর্কে ব্যবহারকারীদের অবহিত করতে সাহায্য করে।
// মালিক সংরক্ষণের জন্য স্টেট ভ্যারিয়েবল
address public owner;

// কন্ট্রাক্ট ডিপ্লয় করার সময় মালিক সেট করা হচ্ছে
constructor() {
    owner = msg.sender;
}

// শুধুমাত্র মালিক স্টোরেজ আপডেট করতে পারবে
function set(uint x) public {
    require(msg.sender == owner, "Only the owner can set the value");
    storedData = x;
}

সারসংক্ষেপ

Solidity ব্যবহার করে একটি Basic Smart Contract তৈরি করা সহজ এবং এটি Ethereum ব্লকচেইনে স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের জন্য প্রথম ধাপ। এই Basic Smart Contract-এর মাধ্যমে আপনি Solidity-এর মৌলিক ধারণাগুলো শিখতে পারবেন এবং ভবিষ্যতে আরও জটিল এবং উদ্ভাবনী কন্ট্রাক্ট তৈরি করতে সক্ষম হবেন।

Content added By
Promotion